package com.star.system.mapper;

import com.star.system.entity.Menu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.star.system.entity.User;
import com.star.system.vo.MenuRoleTreeVO;
import com.star.system.vo.MenuTreeVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 菜单 Mapper 接口
 *
 * @author yangzj
 */
public interface MenuMapper extends BaseMapper<Menu> {

    /**
     * 菜单管理树
     *
     * @param type 类型
     * @return {@link List}<{@link MenuTreeVO}>
     */
    List<MenuTreeVO> listAll(@Param("type") Integer type);

    /**
     * 通过用户id列表
     *
     * @param userId 用户id
     * @return {@link List}<{@link MenuTreeVO}>
     */
    List<MenuTreeVO> listByUserId(@Param("userId") Long userId);

    /**
     * 树 角色管理的菜单树
     *
     * @param roleId 角色id
     * @return {@link List}<{@link MenuRoleTreeVO}>
     */
    List<MenuRoleTreeVO> treeRole(@Param("roleId") Long roleId);

    /**
     * 所有菜单的树
     *
     * @return {@link List}<{@link MenuRoleTreeVO}>
     */
    List<MenuRoleTreeVO> treeAll();

    /**
     * 列表用户通过ids
     *
     * @param menuIds 菜单ids
     * @return {@link List}<{@link User}>
     */
    List<User> listUserByIds(@Param("menuIds") List<Long> menuIds);
}
